package ru.st.selenium.applogicImp;

import ru.st.selenium.applogicTop.EditFieldsTypesObjectHelper;
import ru.st.selenium.model.EditFieldTypesObject;

public class EditFieldsTypesObjectHelperImp extends DriverBasedHelper implements
		EditFieldsTypesObjectHelper {

	public EditFieldsTypesObjectHelperImp(ApplicationManagerImp manager) {
		super(manager.getWebDriver());
	}

	// Добавление поле объекта - ТИПЫ ТАБЛИЦ
	@Override
	public void addFieldsTypesTableHelper(
			EditFieldTypesObject editFieldTypesTable) {
		pages.editFieldsTypesObjectPage
				.ensurePageLoaded() // Ожидаем появление элементов в гриде фрейма
				
				// Форма редактирования полей Типа Таблицы
				.clickAddFieldTypesObject() // "Добавить" - поле
				.setNameField(editFieldTypesTable.getNameFieldTypesObject()) // Название поля
				.setNameIdentifier(
						editFieldTypesTable.getIdentifierFieldTypesObject()) // Название идентификатора поля
				.clickSaveField() // Сохранить добавленное поле

				.clickAddFieldTypesObject()
				.setNameField(editFieldTypesTable.getNameFieldTypesObject1())
				.setNameIdentifier(
						editFieldTypesTable.getIdentifierFieldTypesObject1())
				.selectTypeField() // Выбор поля "Тип поля:"
				.selectTypeFieldText() // Выбор поля типа "Текст"
				.clickSaveField()

				.clickAddFieldTypesObject()
				.setNameField(editFieldTypesTable.getNameFieldTypesObject2())
				.setNameIdentifier(
						editFieldTypesTable.getIdentifierFieldTypesObject2())
				.selectTypeField()
				.selectTypeFieldСheloe() // Выбор поля типа "Целое"
				.clickSaveField()

				.clickAddFieldTypesObject()
				.setNameField(editFieldTypesTable.getNameFieldTypesObject3())
				.setNameIdentifier(
						editFieldTypesTable.getIdentifierFieldTypesObject3())
				.selectTypeField()
				.selectTypeFieldVesh() // Выбор поля типа "Вещественное"
				.clickSaveField()

				.clickAddFieldTypesObject()
				.setNameField(editFieldTypesTable.getNameFieldTypesObject4())
				.setNameIdentifier(
						editFieldTypesTable.getIdentifierFieldTypesObject4())
				.selectTypeField()
				.selectTypeFieldData() // Выбор поля типа "Дата"
				.clickSaveField()

				.clickAddFieldTypesObject()
				.setNameField(editFieldTypesTable.getNameFieldTypesObject5())
				.setNameIdentifier(
						editFieldTypesTable.getIdentifierFieldTypesObject5())
				.selectTypeField()
				.selectTypeFieldFile() // Выбор поля типа "Файл"
				.clickSaveField()

				.clickAddFieldTypesObject()
				.setNameField(editFieldTypesTable.getNameFieldTypesObject6())
				.setNameIdentifier(
						editFieldTypesTable.getIdentifierFieldTypesObject6())
				.selectTypeField()
				.selectTypeFieldDictionary() // Выбор поля типа "Ссылка на справочник"
				.selectTypeDictionary() // Выбор поля - "Справочник:"
				.selectNameDictionary() // Выбор справочника из списка
				.selectField() // Выбор поля - "Поле:"
				.selectNameFieldDictionary() // Выбор названия поля из списка
				.clickSaveField()

				.clickAddFieldTypesObject()
				.setNameField(editFieldTypesTable.getNameFieldTypesObject7())
				.setNameIdentifier(
						editFieldTypesTable.getIdentifierFieldTypesObject7())
				.selectTypeField()
				.selectTypeFieldMultipleDictionary() // Выбор поля типа "Мн. ссылка на справочник"

				.selectTypeDictionary() // Выбор поля - "Справочник:"
				.selectNameMultipleDictionary() // Выбор мн. справочника из списка
				.selectField() // Выбор поля - "Поле:"
				.selectNameFieldMultipleDictionary() // Выбор названия поля из списка
				.clickSaveField()

				.clickAddFieldTypesObject()
				.setNameField(editFieldTypesTable.getNameFieldTypesObject8())
				.setNameIdentifier(
						editFieldTypesTable.getIdentifierFieldTypesObject8())
				.selectTypeField()
				.selectTypeFieldlogical() // Выбор поля типа "Логический"
				.clickSaveField()

				.clickAddFieldTypesObject()
				.setNameField(editFieldTypesTable.getNameFieldTypesObject9())
				.setNameIdentifier(
						editFieldTypesTable.getIdentifierFieldTypesObject9())
				.selectTypeField()
				.selectTypeFieldIphone() // Выбор поля типа "Телефон"
				.clickSaveField()

				.clickAddFieldTypesObject()
				.setNameField(editFieldTypesTable.getNameFieldTypesObject10())
				.setNameIdentifier(
						editFieldTypesTable.getIdentifierFieldTypesObject10())
				.selectTypeField()
				.selectTypeFieldEmail() // Выбор поля типа "Email"
				.clickSaveField()

				.clickAddFieldTypesObject()
				.setNameField(editFieldTypesTable.getNameFieldTypesObject11())
				.setNameIdentifier(
						editFieldTypesTable.getIdentifierFieldTypesObject11())
				.selectTypeField()
				.selectTypeFieldImage() // Выбор поля типа "Изображение"
				.clickSaveField()

				.clickAddFieldTypesObject()
				.setNameField(editFieldTypesTable.getNameFieldTypesObject12())
				.setNameIdentifier(
						editFieldTypesTable.getIdentifierFieldTypesObject12())
				.selectTypeField()
				.selectTypeFieldColor() // Выбор поля типа "Цвет"
				.clickSaveField() // Сохранить Тип таблицы с заполненными полями
				
				.clickSaveObject() // Сохранение объекта
				
				.clicAlertOk(); // Подтверждение сохранение и проверка создания в гриде

	}
	
	// Добавление поле объекта - ТИПЫ ЗАДАЧ
		@Override
	public void addFieldsTypesTaskHelper(
			EditFieldTypesObject editFieldTypesTask) {
		pages.editFieldsTypesObjectPage
				.ensurePageLoaded() // Ожидаем появление элементов в гриде фрейма
				.clickAddFieldTypesObject() // "Добавить" - поле
				.setNameField(editFieldTypesTask.getNameFieldTypesObject()) // Название поля
				.setNameIdentifier(
						editFieldTypesTask.getIdentifierFieldTypesObject())	// Название идентификатора поля
				.clickSaveField() // Сохранить добавленное поле

				.clickAddFieldTypesObject()
				.setNameField(editFieldTypesTask.getNameFieldTypesObject1())
				.setNameIdentifier(
						editFieldTypesTask.getIdentifierFieldTypesObject1())
				.selectTypeField() // Выбор поля "Тип поля:"
				.selectTypeFieldText() // Выбор поля типа "Текст"
				.clickSaveField() // Сохранить поле

				.clickAddFieldTypesObject()
				.setNameField(editFieldTypesTask.getNameFieldTypesObject2())
				.setNameIdentifier(
						editFieldTypesTask.getIdentifierFieldTypesObject2())
				.selectTypeField()
				.selectTypeFieldСheloe() // Выбор поля типа "Целое"
				.clickSaveField()

				.clickAddFieldTypesObject()
				.setNameField(editFieldTypesTask.getNameFieldTypesObject3())
				.setNameIdentifier(
						editFieldTypesTask.getIdentifierFieldTypesObject3())
				.selectTypeField()
				.selectTypeFieldVesh() // Выбор поля типа "Вещественное"
				.clickSaveField()

				.clickAddFieldTypesObject()
				.setNameField(editFieldTypesTask.getNameFieldTypesObject4())
				.setNameIdentifier(
						editFieldTypesTask.getIdentifierFieldTypesObject4())
				.selectTypeField()
				.selectTypeFieldData() // Выбор поля типа "Дата"
				.clickSaveField()

				.clickAddFieldTypesObject()
				.setNameField(editFieldTypesTask.getNameFieldTypesObject6())
				.setNameIdentifier(
						editFieldTypesTask.getIdentifierFieldTypesObject6())
				.selectTypeField()
				.selectTypeFieldDictionary() // Выбор поля типа "Ссылка на справочник"

				.selectTypeDictionary() // Выбор поля - "Справочник:"
				.selectNameDictionary() // Выбор справочника из списка
				.selectField() // Выбор поля - "Поле:"
				.selectNameFieldDictionary() // Выбор названия поля из списка
				.clickSaveField()

				.clickAddFieldTypesObject()
				.setNameField(editFieldTypesTask.getNameFieldTypesObject7())
				.setNameIdentifier(
						editFieldTypesTask.getIdentifierFieldTypesObject7())
				.selectTypeField()
				.selectTypeFieldMultipleDictionary() // Выбор поля типа "Мн. ссылка на справочник"

				.selectTypeDictionary() // Выбор поля - "Справочник:"
				.selectNameMultipleDictionary() // Выбор мн. справочника из списка
				.selectField()  // Выбор поля - "Поле:"
				.selectNameFieldMultipleDictionary() // Выбор названия поля из списка
				.clickSaveField()

				.clickAddFieldTypesObject()
				.setNameField(editFieldTypesTask.getNameFieldTypesObject8())
				.setNameIdentifier(
						editFieldTypesTask.getIdentifierFieldTypesObject8())
				.selectTypeField()
				.selectTypeFieldlogical() // Выбор поля типа "Логический"
															
				.clickSaveField()
				
				.clickAddFieldTypesObject()
				.setNameField(editFieldTypesTask.getNameFieldTypesObject9())
				.setNameIdentifier(
						editFieldTypesTask.getIdentifierFieldTypesObject9())
				.selectTypeField()
				.selectTypeFieldLinkLib() // Выбор поля типа "Ссылка на Библиотеку"
															
				.clickSaveField()

				.clickAddFieldTypesObject()
				.setNameField(editFieldTypesTask.getNameFieldTypesObject10())
				.setNameIdentifier(
						editFieldTypesTask.getIdentifierFieldTypesObject10())
				.selectTypeField()
				.selectTypeFieldLinkTask() // Выбор поля типа "Ссылка на задачу"
															
				.clickSaveField()

				.clickAddFieldTypesObject()
				.setNameField(editFieldTypesTask.getNameFieldTypesObject11())
				.setNameIdentifier(
						editFieldTypesTask.getIdentifierFieldTypesObject11())
				.selectTypeField()
				.selectTypeFieldNumerator() // Выбор поля типа "Нумератор"
				.selectFieldAndInputNumerator() // Ввод шаблона нумератора
				
				.clickSaveField()

				.clickAddFieldTypesObject()
				.setNameField(editFieldTypesTask.getNameFieldTypesObject12())
				.setNameIdentifier(
						editFieldTypesTask.getIdentifierFieldTypesObject12())
				.selectTypeField()
				.selectTypeFieldLinkObject() // Выбор поля типа "Ссылка на объект"
				.clickSaveField()

				.clickAddFieldTypesObject()
				.setNameField(editFieldTypesTask.getNameFieldTypesObject13())
				.setNameIdentifier(
						editFieldTypesTask.getIdentifierFieldTypesObject13())
				.selectTypeField()
				.selectTypeFieldTable() // Выбор поля типа "Таблица"
				.selectFieldTable()
				.selectNameTable()
				.selectField()
				.selectNameFieldTable()
				
				.clickSaveField()
				
				.clickSaveObject()
				
				.clicAlertOk();

	}

	@Override
	public void deleteFieldsTypesTableHelper(
			EditFieldTypesObject editFieldTypesObject) {
		// TODO Auto-generated method stub

	}
	

}
